Saltar al contenido principal

Sistema y Archivos

Python proporciona varios módulos estándar para interactuar con el sistema operativo y manipular archivos o directorios. Estos módulos permiten automatizar tareas como crear carpetas, copiar o mover archivos, obtener información del entorno o recorrer estructuras de directorios.

Los tres más utilizados en este ámbito son:

  • os: para interactuar directamente con el sistema operativo.
  • pathlib: para trabajar con rutas de archivos de manera moderna y orientada a objetos.
  • shutil: para operaciones de alto nivel con archivos (copiar, mover, eliminar, comprimir, etc.).

Su dominio permite desarrollar programas que gestionen archivos y directorios de forma segura y multiplataforma.


1️⃣ Módulo os​

El módulo os ofrece una interfaz para acceder a funcionalidades del sistema operativo desde Python. Permite crear, eliminar o renombrar archivos y directorios, obtener información del entorno, ejecutar comandos del sistema y manipular rutas de manera básica.

Es un módulo multiplataforma, por lo que las funciones funcionan tanto en Windows, como en macOS o Linux (aunque algunas pueden variar ligeramente según el sistema).

Antes de usarlo, debe importarse con:

import os

🟩 Funciones principales​

FunciónDescripciónEjemplo
os.nameDevuelve el nombre del sistema operativo actual.'posix', 'nt', etc.
os.getcwd()Devuelve el directorio de trabajo actual.os.getcwd()
os.chdir(ruta)Cambia el directorio de trabajo.os.chdir("Documentos")
os.listdir(ruta)Devuelve una lista con los nombres de los archivos del directorio.os.listdir(".")
os.mkdir(nombre)Crea un nuevo directorio.os.mkdir("nueva_carpeta")
os.remove(archivo)Elimina un archivo.os.remove("datos.txt")
os.rmdir(carpeta)Elimina un directorio vacío.os.rmdir("vacio")
os.environDevuelve un diccionario con las variables de entorno del sistema.os.environ["PATH"]

🟦 Ejemplo práctico​

Gestión básica de directorios
import os

print("Directorio actual:", os.getcwd())

os.mkdir("pruebas")
os.chdir("pruebas")
print("Ahora estamos en:", os.getcwd())

os.chdir("..")
os.rmdir("pruebas")
print("Carpeta eliminada correctamente.")
en este ejemplo

El programa muestra cómo obtener el directorio actual, crear uno nuevo, cambiar a él y eliminarlo. Estas operaciones son fundamentales para automatizar tareas de organización o mantenimiento de archivos.

🟨 Casos de uso comunes​

  • Automatización de tareas del sistema (copias, limpieza de archivos, informes).
  • Creación y gestión de carpetas en scripts de trabajo.
  • Acceso a variables de entorno (rutas, configuraciones, usuario actual).
  • Programas que requieran portabilidad entre diferentes sistemas operativos.

2️⃣ Módulo pathlib​

El módulo pathlib fue introducido para modernizar y simplificar el manejo de rutas y archivos, sustituyendo gradualmente al uso tradicional de os.path. Ofrece una interfaz orientada a objetos, lo que permite trabajar con rutas como si fueran objetos, no simples cadenas de texto. Es una alternativa más legible, potente y multiplataforma.

Debe importarse con:

from pathlib import Path

🟩 Funciones principales​

Método / PropiedadDescripciónEjemplo
Path(ruta)Crea un objeto ruta.Path("Documentos/archivo.txt")
.exists()Comprueba si la ruta existe.p.exists()
.is_file() / .is_dir()Indica si es un archivo o un directorio.p.is_file()
.iterdir()Itera sobre los elementos del directorio.for f in p.iterdir(): ...
.name, .stem, .suffixDevuelven el nombre, nombre sin extensión y extensión.p.suffix → .txt
.read_text() / .write_text()Lee o escribe texto directamente.p.write_text("Hola")
.unlink()Elimina un archivo.p.unlink()

🟦 Ejemplo práctico​

Recorrer directorios con pathlib
from pathlib import Path

ruta = Path(".") # Directorio actual
for archivo in ruta.iterdir():
if archivo.is_file():
print("Archivo encontrado:", archivo.name)
en este ejemplo
  • Path(".") representa el directorio actual.
  • El método iterdir() recorre los elementos de la ruta y permite filtrar los archivos con .is_file().
  • El código es más limpio y legible que su equivalente con os.listdir().

🟨 Diferencias con os.path​

Aspectoos.pathpathlib
EnfoqueBasado en funcionesOrientado a objetos
LegibilidadMenorMayor
PortabilidadBuenaExcelente
Lectura/escritura directaNoSí (read_text(), write_text())
en conclusión...

pathlib es hoy la forma recomendada y moderna de trabajar con archivos y rutas en Python.

🟥 Casos de uso comunes​

  • Recorrido y análisis de carpetas.
  • Creación o lectura de archivos con sintaxis clara.
  • Filtrado de archivos por extensión o nombre.
  • Scripts de organización de documentos o imágenes.

3️⃣ Módulo shutil​

El módulo shutil (abreviatura de shell utilities) permite realizar operaciones avanzadas con archivos y directorios, como copiar, mover, eliminar o comprimir. Se utiliza habitualmente para automatizar tareas de mantenimiento, instalación, respaldo de datos o despliegue de proyectos.

Debe importarse con:

import shutil

🟩 Funciones principales​

FunciónDescripciónEjemplo
shutil.copy(origen, destino)Copia un archivo.shutil.copy("a.txt", "b.txt")
shutil.move(origen, destino)Mueve o renombra un archivo o carpeta.shutil.move("datos.txt", "backup/")
shutil.rmtree(carpeta)Elimina recursivamente una carpeta y su contenido.shutil.rmtree("temporal")
shutil.make_archive(nombre, formato, carpeta)Crea un archivo comprimido.shutil.make_archive("respaldo", "zip", "backup")
shutil.disk_usage(ruta)Devuelve información sobre el espacio en disco.shutil.disk_usage("/")
Advertencia sobre eliminaciones

Las funciones como rmtree() eliminan archivos de forma permanente (no pasan por la papelera). Por tanto, deben utilizarse con precaución, especialmente en programas que manipulen rutas dinámicas o recibidas del usuario.

🟦 Ejemplo práctico​

Copiar y comprimir archivos
import shutil
import os

os.mkdir("backup")
shutil.copy("informe.txt", "backup/informe_copia.txt")
shutil.make_archive("respaldo", "zip", "backup")

print("Copia y compresión realizadas correctamente.")
en este ejemplo

El código crea una carpeta de respaldo, copia un archivo dentro de ella y genera un archivo comprimido ZIP. Estas tareas son comunes en automatización de copias de seguridad o preparación de entregas.

🟨 Casos de uso comunes​

  • Copias de seguridad automáticas.
  • Limpieza de directorios temporales.
  • Preparación de proyectos para distribución (archivos ZIP).
  • Gestión masiva de archivos y despliegue de aplicaciones.

📊 Tabla resumen​

MóduloPropósito principalEjemplo representativo
osInteracción básica con el sistema operativo y archivos.os.listdir()
pathlibManipulación moderna de rutas de archivos.Path("docs").iterdir()
shutilCopiar, mover, eliminar y comprimir archivos.shutil.make_archive()

El conocimiento de estos tres módulos permite automatizar tareas de sistema, mantener estructuras de archivos ordenadas y desarrollar aplicaciones multiplataforma, seguras y organizadas.